package com.yuntai.pms.model.entity.flowRule;

import com.alibaba.fastjson.JSON;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;

import java.io.Serializable;
import java.util.Date;

@Data
@Slf4j
public class HdpFlowRule implements Serializable {

    private static final long serialVersionUID = 5788144225694666840L;
    /**
     * 主键
     */
    private Long id;

    /**
     * 医院ID，作为限流资源resource（HOS_ID_{hosId}_INTERFACE_{interface}）的一部分
     */
    private Long hosId;

    /**
     * hdp接口指令
     */
    private String cmd;

    /**
     * 限流阈值类型。0为并发线程数流量控制，1为QPS流量控制。对应sentinel中的grade字段
     */
    private Integer type;

    /**
     * 不同限流类型时的上限阀值，对应sentinel中的count字段。
     */
    private Integer upperLimit;

    /**
     * 流量控制效果，指的type=1 QPS流量控制时的情况（0为直接拒绝、1为WarmUp预热冷启动方式、2为匀速排队）
     */
    private Integer controlBehavior;

    /**
     * WarmUp预热期限流效果指标，指的期待系统进入稳定状态的时间（即预热时长，单位秒s）
     */
    private Integer warmUpPeriod;

    /**
     * 匀速排队流量控制效果的阀值。表示每一个请求的最长等待时间(单位毫秒ms)
     */
    private Integer maxQueueingTime;

    /**
     * 规则描述
     */
    private String description;

    /**
     * 是否启用，0为不启用，1为启用
     */
    private Integer enable;

    /**
     * 操作人
     */
    private String operator;

    /**
     * 创建时间
     */
    private Date gmtCreate;

    /**
     * 最后修改时间
     */
    private Date gmtUpdate;

    @Override
    public String toString() {
        return JSON.toJSONString(this);
    }
}